program cpcPaChi;

(* Chi - Un compilador de Pascal chiquitito para CPC
   Por Nacho Cabanes - Version 0.03
   
   Versiones hasta la fecha:
   
   Num.   Fecha       Cambios
   ---------------------------------------------------
   0.17  19-Ago-2008  Permite el parametro -nocomments
                      para eliminar comentarios en codigo
                      de destino

   0.04  27-Mar-2008  Primera version con generador de codigo
                      independiente (en la unit "uPaChiG")

   0.03  25-Mar-2008  Creado un analizador lexico independiente
                      (en la unit "uPaChiL")

   0.02  23-Mar-2008  Admite CLS, LOCATE, WRITECHAR,
                      que lee desde fichero. Solo permite
                      una orden en cada linea, con formato fijo

   0.01  21-Mar-2008  Preliminar: solo acepta CLS por teclado
                      y genera el codigo correspondiente

*)

uses
  upachil,  (* Analizador lexico *)
  upachip,  (* Analizador sintactico -Parser- *)
  upachig;  (* Generador de codigo *)

var
  nombreOrigen, nombreDestino: string;
  

(* Analiza las opciones que teclee el usuario. Por ahora,c
solo el nombre del fichero a compilar *)
procedure analizarOpciones;
begin
  if paramcount >= 1 then
    begin
    nombreOrigen := paramstr(1);
    nombreDestino := paramstr(1) + '.bas';
    end
  else
    begin
    writeln('No se ha indicado el nombre del fichero');
    halt;
    end;
  abrirFicheroEntrada( nombreOrigen );
  abrirFicheroDestino( nombreDestino );
  if paramcount >= 2 then
    if paramstr(2) = '-nocomments' then
      begin
      writeln('Omitiendo comentarios en codigo objetivo');
      volcarComentarios := false;
      end
    else
      begin
      writeln('Opciones permitidas: -nocomments');
      end;
end;


(* Cuerpo del programa *)
begin
  analizarOpciones;
  writeln('Compilando ',nombreOrigen,'...');
  
  analizarPrograma;
  generarCodigoFinal;
  cerrarFicheroEntrada;  
  writeln('Completado.');
end.
